My summer vacation

(or, a few things we shipped this year)

John Fultz
User Interface Group
Wolfram Research, Inc.

Victory lap — multiple undo

A hard problem to solve...

The kernel keeps track of computations in time

The front end keeps track of where you type spatially

How do we not get totally confused when going through history?!

A solution...

Visual indication of output synchronization

Plot3D[Sin[x y], {x, 0, 2π}, 
(*a comment *){y, 0, 2π}]

Multiple undo might not be chronologically ordered

This makes more sense when using the product, although it could lead to inconsistencies

Do[Pause[3]; Print[i], {i, 5}]

Make another cell and keep typing while this evaluation is running.

Normally, mouse-click interfaces don’t undo

But you can change that:

Manipulate[Expand[(a+b)^n], {n, 1, 10,1}]

Manipulate[Expand[(a+b)^n], {n, 1, 10,1},UndoTrackedVariables:>{n}]

Another victory lap

More systems built in the FE

Testing notebooks

Template notebooks

Wolfram Programming Lab

A bit more on the templating feature

Print@Style[Hyperlink["Example 2","Example Template 2.nb"],"Subsubsection"]

data2=<|"currencyList"->{"Euro","Dollar","Yen","Sterling","Ruble"},"name"->"John Fultz"|>;

GenerateDocument["~/Documents/Example Template 2.nb",data2];

Integration of the cloud file system

Open and saving in the cloud are first class operations

File saves are intelligently queued in the background, no need to wait

More improvements to code assist

Argument completion

Export["

Color function completion

Plot3D[Sin[x y], {x, 0, 3}, {y, 0, 3},ColorFunction->Col

Option rhs completion

Plot[{Sin[(E^x)],Cos[x]}, {x, 0, 5},PlotTh

Which are context-sensitive...

Button["solve it", Print[NDSolve[{y'[x]==y[x]Cos[x+y[x]],y[0]==1},y,{x,0,30},Method->"ExplicitRungeKutta"]],Method->"Queued"]

3D image tools

ExampleData[{"TestImage3D","MRknee"}]

PDF export — gutted and redone

PDFSize[expr_]:=StringLength[ExportString[expr,"PDF"]];
V9Execute=With[{$V9Link=LinkLaunch["/Applications/Wolfram/Mathematica\\ 9.0.1.app/Contents/MacOS/MathKernel -mathlink"]},LinkRead[$V9Link];
LinkWrite[$V9Link, Unevaluated@EvaluatePacket[PDFSize[expr_]:=StringLength[ExportString[expr,"PDF"]]]];
LinkRead[$V9Link];
(LinkWrite[$V9Link,Unevaluated[EvaluatePacket[ReleaseHold@UsingFrontEnd[#]]]];LinkRead[$V9Link][[1]])&];

PDFSize[a+b]

PDFSize["αβ"]-PDFSize["α"]

PDFSize[Plot[Sin[x], {x, 0, 2π}]]

PDFSize[Plot3D[Sin[x] Cos[y], {x, 0, 6}, {y, 0, 6}]]

Some other features not to miss

Better platform support

Mac — Retina support (DPI scaling under Windows coming soon, but not here yet)

Mac — Proper full-screen support

Windows — Ditched the floating menubar

Wolfram Desktop — new licensing option

Unified and modernized fonts, now with sans serif

3D Inset

Texture maps on filled curves

2D Image editor supports mask creation

We fixed FileNameSetter in dialog boxes

Some things on my radar

Improving the coding experience

Git integration

Unit testing improvements

Code assistance improvements

Deployment

Digital signing

Some things on my radar

More interfaces in our toolbox

Spreadsheet-type control for handling tabular data

Ribbons and floating interfaces

Developer control over completions

Some things on my radar

Long awaited platform migrations

Full Cocoa port for Mac

Qt5 port for Linux

DirectWrite (accelerated 2D drawing, enhanced font rendering) support for Windows

Some things on my radar

Your ideas

???

If you liked this talk...

Today

Typesetting — Jason Harris, immediately after I’m done

Graphics — Yuzhu Lu, 12:30pm

Rhino — Chris Carlson, 1:30pm

CDF Player for iOS — Rob Raguet-Schofield, 4:30pm

Tomorrow

What’s new in CDF — Andre Kuzniarek, 11:30am

Wolfram Calculator — Jeremiah Cunningham, 1pm